package com.sz.admin.system.service;

import com.mybatisflex.core.service.IService;
import com.sz.admin.system.pojo.po.SysMonitorFileRecord;
import com.sz.admin.system.pojo.vo.filemonitor.SysMonitorFileRecordVO;

import java.io.File;
import java.util.List;

/**
 * 监控文件记录服务接口
 *
 * @author sz-admin
 * @since 2025-01-13
 */
public interface SysMonitorFileRecordService extends IService<SysMonitorFileRecord> {

    /**
     * 记录文件处理结果
     */
    void recordFileProcess(Long monitorId, File originalFile, String newFilename, 
                          String storagePath, String objectName, String fileUrl, 
                          boolean success, String errorMessage);
    
    /**
     * 记录文件处理结果（带预计算的MD5）
     */
    void recordFileProcess(Long monitorId, File originalFile, String newFilename, 
                          String storagePath, String objectName, String fileUrl, 
                          boolean success, String errorMessage, String precomputedMd5);
                          
    /**
     * 记录文件处理结果（带文件标签和sf_id）
     */
    void recordFileProcessWithTag(Long monitorId, File originalFile, String newFilename, 
                                 String storagePath, String objectName, String fileUrl, 
                                 boolean success, String errorMessage, String precomputedMd5,
                                 String fileTag, Long sfId);

    /**
     * 记录文件处理结果（带文件标签、sf_id和OCR识别结果）
     */
    void recordFileProcessWithOCR(Long monitorId, File originalFile, String newFilename, 
                                  String storagePath, String objectName, String fileUrl, 
                                  boolean success, String errorMessage, String precomputedMd5,
                                  String fileTag, Long sfId, String carNumber, String carNumberRes);

    /**
     * 获取监控的文件处理记录
     */
    List<SysMonitorFileRecordVO> getRecordsByMonitorId(Long monitorId);

    /**
     * 统计监控处理结果
     */
    void updateMonitorStatistics(Long monitorId);

}